# ⭐第五天
# 1、给定一个由整数组成的非空列表，在该数的基础上加一。最高位数字存放在列表的首位，列表中每个元素只存储单个数字。你可以假设除了整数 0 之外，这个整数不会以零开头。
# 示例 1：
# 输入：digits = [1,2,3]
# 输出：[1,2,4]
# 解释：输入数组表示数字 123。
# 示例 2：
# 输入：digits = [4,3,2,1]
# 输出：[4,3,2,2]
# 解释：输入数组表示数字 4321。
# 示例 3：
# 输入：digits = [0]
# 输出：[1]
# 提示：
# 1 <= digits.length <= 100
# 0 <= digits[i] <= 9
# 评分标准：
# a.自己分析时间复杂度（2分）
# b.结果正确（3分）

# 方法一:
def Method1_fun(digits):
    digits = ''.join([str(i) for i in digits])
    digits = int(digits) + 1
    return [int(i) for i in str(digits)]

# 方法二:
def Method2_fun(digits):
    digits = digits[::-1]
    for i in range(len(digits)):
        if digits[i] == 9 and i == len(digits) - 1:
             digits[i] = 0
             digits.append(1)
        elif digits[i] == 9:
            digits[i] = 0
        else:
            digits[i] += 1
            break
    return digits[::-1]

# 2.给定一个字符串date，格式为yyyy-mm-dd，表示一个公历日期。返回该日期的二进制表示。
def date_to_binary(date):
    # 分割日期为年、月、日
    year, month ,day = map(int,date.split("-"))

    # 转换为二进制并去除前缀“0b”
    year_bin = bin(year)[2:]     # bin() 返回 “0bxxx格式”  [2:] 截取实际二进制部分
    month_bin = bin(month)[2:]
    day_bin = bin(day)[2:]

    # 按原格式组合返回
    return f"{year_bin}-{month_bin}-{day_bin}"

if __name__ == "__main__":
    digits = [4,3,2,1]
    print('--->方法一：',Method1_fun(digits))
    # 输出结果：[4, 3, 2, 2]

    digits = [1,2,3]
    print('--->方法一：',Method1_fun(digits))
    # 输出结果：[1, 2, 4]

    date = "2023-10-06"
    print('--->算法二：',date_to_binary(date))
    # 输出结果：11111100111-1010-110

